Distributed computing services, utility-based data centers, and other types of resource-on-demand systems are becoming increasingly popular as a highly scalable means for utilizing computer resources to meet the computing demands of users.
Managing these resource-on-demand systems, including provisioning resources to satisfy user demand, is a difficult task that requires a significant amount of time and labor. Resource-on-demand systems typically pre-allocate and pre-install servers and storage resources for customer applications. In order to meet predetermined quality of service (QoS) requirements, however, servers are typically over-provisioned and under utilized.
Provisioning resources is an even more difficult task if the resources are being provisioned for shared services, where user demand may be less predictable. For example, a virtual desktop system is a type of shared services environment that provides remote desktop sessions for users. A remote desktop session includes a “desktop” with service elements hosted remotely from the user. The service elements may include processing, memory and storage as well as the software, including an operating system and applications, hosted remotely from the user. For example, the service elements may be located in a datacenter remote from the user or another environment where large amounts of computing resources can be physically maintained. The display and user input devices for interacting with the remote desktop are located with the user away from the computing resources, and the users and computing resources are connected using a network. For example, users may use thin clients to interact with their remote desktops. “Thin client” is a device that provides an interaction capability of a user with a desktop system. A thin client includes a small computer with peripherals such as monitor, keyboard, mouse and other interfaces. The thin client runs software that allows displaying and interacting with the actual desktop which runs remotely on a computer (or in a virtual machine on a computer) in a shared services environment. The desktop is connected to the thin client via a network connection through which the desktop's content is presented on the thin client's monitor, and through which a user's interactions are mediated back to the desktop such as mouse or keyboard interactions.
Furthermore, the resources in the resource pool that are operable to be provisioned may be heterogeneous. For example, there may be heterogeneity in the resources that are provisioned to run different desktops in a data center. Some desktops may be run on virtual machines while other more powerful desktops may require that stand alone servers be dedicated to them. Some desktops may run on low-end hardware while others may require high-end servers with powerful multimedia and graphics capabilities. Also, there is heterogeneity in how desktops are delivered to users. Some desktops may be delivered through remote display protocols such as RDP (Remote Display Protocol) or RGS (Remote Graphics System). These protocols differ in their ability to support graphics intensive applications and various remote devices. Other desktops may be delivered through application streaming capabilities.
To satisfy their user needs, enterprises should be able to support heterogeneous resources as well as heterogeneous user needs. However, currently, there is no common or uniform mechanism for managing and provisioning heterogeneous resources for different types of desktops. For example, each of the above-mentioned types of desktops would be deployed as independent products with their own management components. This results in high management costs. Furthermore, current provisioning systems lack the flexibility to quickly and easily deploy new desktop types, new servers or new virtualization types.